--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
scripts/generate_locale_template.py v4.6.0-rc.1 (dc200d15) Text, 1.11 KB
T8b949e# SPDX-License-Identifier: 0BSD
Tff7b72import T7ee787json
Tff7b72import T7ee787os
Tff7b72import T7ee787sys
Tff7b72def Td2a8ffclear_valuesTb4b4b4(Te6edf3dTb4b4b4)Tb4b4b4:
T8b949e"""Recursively replace all string values with empty strings in a dictionary."""
Tff7b72if Tffa657isinstanceTb4b4b4(Te6edf3dTb4b4b4, Tffa657dictTb4b4b4)Tb4b4b4:
Tff7b72return Tb4b4b4{Te6edf3kTb4b4b4: Te6edf3clear_valuesTb4b4b4(Te6edf3vTb4b4b4) Tff7b72for Te6edf3kTb4b4b4, Te6edf3v Tff7b72in Te6edf3dTff7b72.Td2a8ffitemsTb4b4b4(Tb4b4b4)Tb4b4b4}
Tff7b72return Ta5d6ff"Ta5d6ff"
Tff7b72def Td2a8ffmainTb4b4b4(Tb4b4b4)Tb4b4b4:
T8b949e# Paths are relative to the workspace root where Taskfile is run
Te6edf3en_path Tff7b72= Te6edf3osTff7b72.Td2a8ffpathTff7b72.Td2a8ffjoinTb4b4b4(Ta5d6ff"Ta5d6ffmeshchatxTa5d6ff"Tb4b4b4, Ta5d6ff"Ta5d6ffsrcTa5d6ff"Tb4b4b4, Ta5d6ff"Ta5d6fffrontendTa5d6ff"Tb4b4b4, Ta5d6ff"Ta5d6fflocalesTa5d6ff"Tb4b4b4, Ta5d6ff"Ta5d6ffen.jsonTa5d6ff"Tb4b4b4)
Te6edf3out_path Tff7b72= Ta5d6ff"Ta5d6fflocales.jsonTa5d6ff"
Tff7b72if Tff7b72not Te6edf3osTff7b72.Td2a8ffpathTff7b72.Td2a8ffexistsTb4b4b4(Te6edf3en_pathTb4b4b4)Tb4b4b4:
Tffa657printTb4b4b4(Ta5d6fffTa5d6ff"Ta5d6ffError: Source file not found at Tffd700{Te6edf3en_pathTffd700}Ta5d6ff"Tb4b4b4)
Te6edf3sysTff7b72.Td2a8ffexitTb4b4b4(T79c0ff1Tb4b4b4)
Tff7b72tryTb4b4b4:
Tff7b72with Tffa657openTb4b4b4(Te6edf3en_pathTb4b4b4, Te6edf3encodingTff7b72=Ta5d6ff"Ta5d6ffutf-8Ta5d6ff"Tb4b4b4) Tff7b72as Te6edf3fTb4b4b4:
Te6edf3en_data Tff7b72= Te6edf3jsonTff7b72.Td2a8ffloadTb4b4b4(Te6edf3fTb4b4b4)
Te6edf3template Tff7b72= Te6edf3clear_valuesTb4b4b4(Te6edf3en_dataTb4b4b4)
Tff7b72with Tffa657openTb4b4b4(Te6edf3out_pathTb4b4b4, Ta5d6ff"Ta5d6ffwTa5d6ff"Tb4b4b4, Te6edf3encodingTff7b72=Ta5d6ff"Ta5d6ffutf-8Ta5d6ff"Tb4b4b4) Tff7b72as Te6edf3fTb4b4b4:
Te6edf3jsonTff7b72.Td2a8ffdumpTb4b4b4(Te6edf3templateTb4b4b4, Te6edf3fTb4b4b4, Te6edf3indentTff7b72=T79c0ff4Tb4b4b4, Te6edf3ensure_asciiTff7b72=Tff7b72FalseTb4b4b4)
Tffa657printTb4b4b4(
Ta5d6fffTa5d6ff"Ta5d6ffSuccessfully generated Tffd700{Te6edf3out_pathTffd700}Ta5d6ff with all keys from Tffd700{Te6edf3en_pathTffd700}Ta5d6ff (empty values).Ta5d6ff"Tb4b4b4,
Tb4b4b4)
Tff7b72except Tf85149Exception Tff7b72as Te6edf3eTb4b4b4:
Tffa657printTb4b4b4(Ta5d6fffTa5d6ff"Ta5d6ffError generating locale template: Tffd700{Te6edf3eTffd700}Ta5d6ff"Tb4b4b4)
Te6edf3sysTff7b72.Td2a8ffexitTb4b4b4(T79c0ff1Tb4b4b4)
Tff7b72if Tff7b72__name__ Tff7b72== Ta5d6ff"Ta5d6ff__main__Ta5d6ff"Tb4b4b4:
Te6edf3mainTb4b4b4(Tb4b4b4)
──────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────